/* 
 * File:   Knot.h
 * Author: vicror
 *
 * Created on October 9, 2011, 11:25 PM
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files
 * (the "Software"), to deal in the Software without restriction,
 * including without limitation the rights to use, copy, modify, merge,
 * publish, distribute, sublicense, and/or sell copies of the Software,
 * and to permit persons to whom the Software is furnished to do so,
 * subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included
 * in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

#ifndef KNOT_H
#define	KNOT_H
#include "Basic_Knot.h"
#include "Item.h"
namespace SearchEnginer {
    /**
     * @brief Класс узла поиска.
     *
     * Класс предназначен для хранения состояния узла в списке узлов.
     */
    class Knot : public Basic_Knot<Item> {
    public:
        /**
         * @brief Конструктор узла
         * @param Нет параметров.
         * @return Нет возврашаемого значения.
         */
        Knot();

        /**
         * @brief Конструктор копирования узла
         * @param orig - источник копирования.
         * @return Нет возврашаемого значения
         */
        Knot(const Knot& orig);

        /**
         * @brief деструктор узла
         * @param Нет параметров.
         * @return Нет возврашаемого значения.
         */
        ~Knot();

        /**
         * @brief Добавляет узел в список
         * @param orig - Добавляемый узел
         * @return Возрашает количество узлов в списке.
         *
         * Добавляет к списку узлов 1 элемент, если такой элемент
         * не содержится в списке.
         */
        int andKnot(const Knot& orig, int mix=1);

    };
}
#endif	/* KNOT_H */

